﻿// 4557. 最长上升子序列.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>



using namespace std;
/*
https://www.acwing.com/problem/content/4560/


给定一个长度为 N的整数序列 a1,a2,…,aN。

请你计算该序列的最长上升子序列的长度。

上升子序列是指数值严格单调递增的子序列。

输入格式
第一行包含整数 N。

第二行包含 N 个整数 a1,a2,…,aN。

输出格式
一行，一个整数，表示最长上升子序列的长度。

数据范围
1≤N≤1000
,
0≤ai≤10000。

输入样例：
7
1 7 3 5 9 4 8
输出样例：
4
*/

const int N = 1010;
int arr[N];
int dp[N];
int n;

int main()
{
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> arr[i];
	}
	arr[0] = -1;
	int ans = 0;
	for (int i = 1; i <= n; i++) {
		for (int j = 0; j < i; j++) {
			if (arr[i] > arr[j]) {
				dp[i] = max(dp[i], dp[j] + 1);
			}
		}
		ans = max(ans, dp[i]);
	}

	cout << ans << endl;
	return 0;
}

 